package com.itheima.code.strategy;

import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;

@Component
public class SpringContextUtil implements ApplicationContextAware {
   private static ApplicationContext applicationContext;

   @Override
   public  void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
      SpringContextUtil.applicationContext = applicationContext;
   }

   public static Object getBean(String name) {
      return applicationContext.getBean(name);
   }
   public static <T> T getBean(Class<T> clazz){
      return applicationContext.getBean(clazz);
   }

   public static <T> T getBean(String name, Class<T> requiredType) {
      return applicationContext.getBean(name, requiredType);
   }

   public static boolean containsBean(String name) {
      return applicationContext.containsBean(name);
   }

   public static boolean isSingleton(String name) {
      return applicationContext.isSingleton(name);
   }

   public static Class<?> getType(String name) {
      return applicationContext.getType(name);
   }

}
